<?php
    session_start();
    $authentificationClasseName="AuthentificationController";
    $authentification_File_Name="controller/".$authentificationClasseName.'.php';
    require_once("view/utileView.php");

    
  # Execution des bonnes classes et fichiers en fonction de l'action choisie
    if (isset($_GET["controller"])) {
	  $ctr_to_run = $_GET["controller"]."Controller";
  } else {
    # Si pas de controleur trouvée, choisit celui par defaut
    $ctr_to_run = "SeanceController";
  }
  # Recherche du nom de l'action pour ce controleur
  if (isset($_GET["action"])) {
    $action = $_GET["action"];
  } else {
    # Si pas d'action trouvée, definit une action par defaut
    $action = "index";
  }
  
  # Chargement du module de controleur correspondant à l'action
  
  # Construit le nom du fichier PHP du controleur de l'action
  $ctr_file_name = "controller/".$ctr_to_run.'.php';

  if (file_exists($ctr_file_name)){
    # Le fichier est trouvé, il est chargé et définit une nouvelle classe
    require_once($ctr_file_name);
    
    # Construit le nom de la classe controller à activer
    $ctrClassName = $ctr_to_run;
    # Vérifie que cette classe existe
    if(file_exists($authentification_File_Name)){
        require_once($authentification_File_Name);
        if (class_exists($authentificationClasseName)){
            if (class_exists($ctrClassName)) {
              # Cree l'objet controleur de cette action
              $controller = new $ctrClassName();
              # Vérifie que le code de l'action existe
              if (method_exists($controller,$action)) {
                # Réalise le traitement adéquat en lancant l'action de ce controleur
                $controllerAuthentification= new AuthentificationController();
                  if($controllerAuthentification->authentification()){
                    $controller->$action();
                  }else{
                    $controllerAuthentification->index();
                  }
              } else {
                # Lorsque l'action n'est pas retrouvée
                die("<strong>### Erreur : la methode '$action' du controleur '$ctrClassName' du fichier '$ctr_file_name' n'existe pas</strong></br>
                   Aide : verifiez que cette métode est bien orthographié dans le fichier $ctr_file_name.");        
              }
            } else {
              # Lorsque la classe n'existe pas
              die("<strong>### Erreur : la classe du controleur '$ctrClassName' du fichier $ctr_file_name n'existe pas</strong></br>
                  Aide : verifiez que le nom de cette classe est bien orthographié dans le fichier $ctr_file_name.");
            }
        }else{
          # Lorsque la classe n'existe pas
              die("<strong>### Erreur : la classe du controleur $authentificationClasseName du fichier controller/AuthentificationController.php n'existe pas</strong></br>
                  Aide : verifiez que le nom de cette classe est bien orthographié dans le fichier $ctr_file_name.");
        }
    } else{
        # Le fichier n'est pas trouvé
      die("<strong>### Erreur : le fichier $authentification_File_Name est absent</strong></br>
          Aide : la variable controlleur dans l'url ne correspond pas à un fichier existant, créer le s'il n'existe pas ou s'il existe et possede un nom adéquat changez la variable de l'url.");
    }
  } else{
    # Le fichier n'est pas trouvé
    die("<strong>### Erreur : le fichier $ctr_file_name est absent</strong></br>
        Aide : la variable controlleur dans l'url ne correspond pas à un fichier existant, créer le s'il n'existe pas ou s'il existe et possede un nom adéquat changez la variable de l'url.");
  }
  
    function afficherView($viewName,$data,$withLayout){
        foreach ($data as $key => $value) {
            global $$key;
            $$key=$value;
        }
        if(!$withLayout){
            include("view/view".ucfirst($viewName).".php");
        }else{
            global $content;
            $content="view".ucfirst($viewName).".php";
            include("view/layout.php");
        }
    }
    function afficherFile($fileName,$data){
        foreach ($data as $key => $value) {
            global $$key;
            $$key=$value;
        }
        include($fileName);
        
    }
?>